home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1 / Nebula One.iso / Internet / News / Alexandra.0.82 / Source / Preferences.subproj / PMArticleText.m < prev    next >
Encoding:
Text File  |  1996-01-30  |  4.3 KB  |  172 lines

  1.  
  2. #import "../Alexandra.h"
  3. #import "PMArticleText.h"
  4. #import <dbkit/DBTableView.h>
  5.  
  6. @implementation PreferencesManager(ArticleText)
  7.  
  8. //-----------------------------------------------------------
  9. // FONT STUFF
  10. //-----------------------------------------------------------
  11.  
  12. - showFont:sender;
  13.     {
  14.     char    nameAndSize[150];
  15.     
  16.     sprintf(nameAndSize,"%s %.0fpt",[font name],[font pointSize]);
  17.     [aFontField setFont:font];
  18.     [aFontField setStringValue:nameAndSize];
  19.     return self;
  20.     }
  21.  
  22.  
  23. - openFontPanel:sender;
  24.     {
  25.     [[aFontField window] makeFirstResponder:aFontField];
  26.     [[FontPanel new] panelConvertFont:[aFontField font]];
  27.     [[FontManager new] orderFrontFontPanel:sender];    
  28.     return self;
  29.     }
  30.  
  31.  
  32. - changeFont:sender;
  33.     {
  34.     font=[[FontManager new] convertFont:font];
  35.     [self showFont:self];
  36.     [thePanel setDocEdited:YES];
  37.     return self;
  38.     }
  39.  
  40.  
  41.  
  42. //-----------------------------------------------------------
  43. // DB TABLE VIEW 
  44. //-----------------------------------------------------------
  45.  
  46. // Achtung diese Methode kann von beiden MiscTableControllern aufgerufen werden.
  47. // Macht aber nichts weiter, dass diese Methode nur (oder gerade) in dieser
  48. // Katergorie steht.
  49.  
  50. - miscTableController:sender valueDidChangeFor:identifier at:(unsigned int)position;
  51.     {
  52.     [self markDirty:sender];
  53.     return self;
  54.     }
  55.  
  56.  
  57. //-----------------------------------------------------------
  58. // HEADER SELECTION
  59. //-----------------------------------------------------------
  60.  
  61. /*    
  62.     if(strpbrk([hName stringValue],":\t ")!=NULL){
  63.        NXRunAlertPanel("Alexandra","Not a valid header.",NULL,NULL,NULL);
  64.         return self;
  65.     }
  66. */    
  67.  
  68.  
  69. //-----------------------------------------------------------
  70. // READ/WRITE 
  71. //-----------------------------------------------------------
  72.  
  73. - readArticleTextPrefs
  74.     {
  75.     char        *headerList,*header;
  76.     Font        *newFont;
  77.     float        fSize;
  78.     const char    *fontNameSize;
  79.     char        fName[150];
  80.     int            i;
  81.     MiscList    *rows;
  82.     
  83.     [aMode setState:[NXApp defaultIntValue:DEFAULT_HEADER_MODE]==NEWSPAPER_HEADER];
  84.     [aFancyBody setState: [NXApp defaultBoolValue:DEFAULT_REWRAP_ARTICLE_TEXT]];
  85.     [aSignatureDetection setState:[NXApp defaultBoolValue:DEFAULT_SIG_DETECTION]];
  86.  
  87.     EM_DURING
  88.         rows=[[MiscList alloc] init];
  89.         if([NXApp defaultIntValue:DEFAULT_HEADER_MODE]==FULL_HEADER)
  90.             [rows addObject:[[KVPair alloc] initKey:"all" value:""]];
  91.         else
  92.             {
  93.             headerList=(char *)[NXApp defaultValue:DEFAULT_HEADER_FILTER];
  94.             EM_CONDERROR(!headerList,EPREFHeaderPrefMissing,NULL,NULL);
  95.             headerList=NXCopyStringBufferFromZone(headerList,[self zone]);
  96.     
  97.             for(header=strtok(headerList,":");header!=NULL;header=strtok(NULL,":"))
  98.                 [rows addObject:[[KVPair alloc] initKey:header value:""]];
  99.             NXZoneFree([self zone],headerList);
  100.             }
  101.         
  102.         for(i=[rows count];i<20;i++)
  103.             [rows addObject:[[KVPair alloc] init]];
  104.         
  105.         [aHeaderController empty:nil];
  106.         [aHeaderController addRowsFrom:rows];
  107.     EM_EMPTYHANDLER
  108.  
  109.     rows=[rows free];    
  110.  
  111.     EM_DURING
  112.         fontNameSize=[NXApp defaultValue:DEFAULT_ARTICLE_FONT];
  113.         EM_CONDERROR(!fontNameSize,EPREFFontPrefMissing,NULL,NULL);
  114.         sscanf(fontNameSize,"%s %f",fName,&fSize);
  115.         EM_CONDERROR(fSize<8,EPREFFontTooSmall,(void *)8,NULL);
  116.         newFont=[Font newFont:fName size:fSize];
  117.         EM_CONDERROR(!newFont,EPREFFontNotFound,fName,NULL);
  118.         font=newFont;
  119.         [self showFont:self];
  120.     EM_EMPTYHANDLER
  121.  
  122.     return self;    
  123.     }
  124.  
  125.  
  126. - writeArticleTextPrefs;
  127.     {
  128.     MiscList *pairList=[aHeaderController rows];
  129.     char    *p,headerList[1000]; // ## HARDCODED LIMIT!
  130.     const char *header;
  131.     KVPair    *pair;
  132.     int        hmode;
  133.  
  134.     [aHeaders endEditing];
  135.     
  136.     hmode=NO_HEADER;
  137.     *headerList='\0';
  138.     p=headerList;
  139.     for(pair=[pairList setFirstObject]; pair; pair=[pairList setNextObject])
  140.         if(![pair isNull])
  141.             {
  142.             header=[pair key];
  143.             hmode=SMALL_HEADER;
  144.             if(!strcasecmp(header,"all"))
  145.                 {
  146.                 strcpy(headerList,"all");
  147.                 hmode=FULL_HEADER;
  148.                 break;
  149.                 }
  150.             sprintf(p,"%s:", header);
  151.             p+=strlen(header)+1;
  152.             }
  153.  
  154.     if([aMode state])
  155.         hmode=NEWSPAPER_HEADER;
  156.  
  157.     [NXApp setDefault:DEFAULT_HEADER_MODE toInt:hmode];
  158.     [NXApp setDefault:DEFAULT_HEADER_FILTER to:headerList];
  159.     [NXApp setDefault:DEFAULT_REWRAP_ARTICLE_TEXT toBool:[aFancyBody state]];
  160.     [NXApp setDefault:DEFAULT_SIG_DETECTION toBool:[aSignatureDetection state]];
  161.     [NXApp setDefault:DEFAULT_ARTICLE_FONT to:[aFontField stringValue]];
  162.  
  163.     return self;
  164.     }
  165.  
  166.  
  167. //-----------------------------------------------------------
  168. // THAT'S IT
  169. //-----------------------------------------------------------
  170.  
  171. @end
  172.